www.gusucode.com > matlab从零到进阶程序与数据 > matlab从零到进阶程序与数据/第12章 常微分方程(组)数值求解/examp12_3_1.m

    function examp12_3_1
%用符号积分求解dy的解析表达式
[dy(1,1),dy(2,1)] = solve('dy2*(y(2)*cos(4*t) - y(1)^3) - t/5*dy1',...
    't*sin(y(2))/8 - 2*y(2)*dy2 + sqrt(t)*dy1','dy1','dy2');
%利用字符串执行函数eval生成微分方程的匿名函数
eval(['DyDtAnony = @(t,y) [' char(dy(1,1)),';',char(dy(2,1)),']']);
tspan = [1 30];
y0 = [1;1];
[t,y] = ode45(DyDtAnony,tspan,y0);%调用ode45求解
figure;
plot(t,y(:,1),'k-');
hold on
plot(t,y(:,2),'k:');
%图例,位置自动选择最佳位置
L = legend('{\ity}_1(t)','{\ity}_2(t)','Location','best');
set(L,'fontname','Times New Roman');
xlabel('\itt','fontsize',16);